package com.jeeplus.modules.guide.utils;
import com.jeeplus.modules.guide.service.*;
import com.jeeplus.modules.guide.task.Send;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author azj
 * @data 2020-15-18
 * @since 3.2.2 定时任务入口
 */
@Component
@EnableScheduling
public class WXJobs {
    @Autowired
    private MobileAppointmentService mobileAppointmentService;
    @Autowired
    private CompanyUtils companyUtils;
    @Autowired
    private MobileSilentService mobileSilentService;
    @Autowired
    private MobileIndexService mobileIndexService;
    @Autowired
    private Send send;
    //税务统计分析
    @Autowired
    private SWService swService;
    @Autowired
    private WeixinUtil weixinUtil;
    // 一码办成事
    @Autowired
    private YmbcsMatterService ymbcsMatterService;

    /*
     * 0 0 10,14,16 * * ? 每天上午10点，下午2点，4点 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时 0 0 12 ? *
     * WED 表示每个星期三中午12点 （1~7 1为星期日 或 SUN，MON，TUE，WED，THU，FRI，SAT） "0 0 12 * * ?"
     * 每天中午12点触发 "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 "0 0/5 14 * * ?"
     * 在每天下午2点到下午2:55期间的每5分钟触发 "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
     * "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 "0 10,44 14 ? 3 WED"
     * 每年三月的星期三的下午2:10和2:44触发 "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 "0 15 10 15 * ?"
     * 每月15日上午10:15触发 "0 15 10 L * ?" 每月最后一日的上午10:15触发 "0 15 10 ? * 6L"
     * 每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6L 2002-2005"
     * 2002年至2005年的每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
     * "0 15 10 ? * *" 每天上午10:15触发 "0 15 10 * * ?" 每天上午10:15触发 "0 15 10 * * ? *"
     * 每天上午10:15触发 "0 15 10 * * ? 2005" 2005年的每天上午10:15触发
     */

    //定时获取AccessToken
    @Scheduled(fixedDelay = 1000 * 2*60*60) //2个小时执行一次
    public void scheduledByDay() {
        weixinUtil.getAccessToken();
    }

    //清空群众排队操作记录
    @Scheduled(cron = "0 0 19 ? * *")
    public void toScheduldelUserHistory() {
        swService.toScheduldelUserHistory();
    }

    //每天时间设定 0 0 20 更新过期预约数据
    @Scheduled(cron = "0 0 20 ? * *")
    public void scheduled() {
        //mobileAppointmentService.updateYYInfo();
        mobileSilentService.deleteTellCount();
    }

    //朝九晚7工作时间内每20分钟 发送短信未评价通知 线上评价
    @Scheduled(cron = "0 0/10 9-18 * * ?")
    public void findUserSMSPJ() {
        send.findUserSMSPJ();
    }

    //事件中枢平台企业信息对接至高馨办
    @Scheduled(cron = "0 10 23 ? * *")
    public void toCompanyData() {
        companyUtils.getCompanyData();
    }


    //公成都市居住证积分预约获取
    @Scheduled(cron = "0 0 8 * * ?")
    public void getGAWJF() {
        companyUtils.getGAWJF();
    }

    //朝九晚五工作时间内每5分钟  一码办成事群众流程记录
    @Scheduled(cron = "0 0/5 9-18 * * ?")
    public void doYMBCS() {
        List <Map <String, String>> maps = mobileIndexService.selectYMBCSList();
        for(Map <String, String> m : maps){
            HashMap <String, String> map = mobileSilentService.selectYMBCSValue(m.get("idcard"), m.get("doTime"));
            if(null != map){
                Map <String, String> user = mobileIndexService.findRegisterTime(m.get("idcard"));
                if(null != map.get("typeName") && map.get("typeName").contentEquals("集体户籍页借还/职称证书领取")){
                    map.put("typeName","职称证书领取");
                }
                if(null != map.get("typeName") && map.get("typeName").contentEquals("社会事务综窗")){
                    map.put("typeName","集体户籍页借还");
                }
                if(null != map.get("areaName") && null != map.get("areaId")){
                    if("510109000001".equals(map.get("areaId"))){
                        map.put("areaName","（自贸）"+map.get("areaName"));
                    }else if("510109000003".equals(map.get("areaId"))){
                        map.put("areaName","（西区）"+map.get("areaName"));
                    }else{
                        map.put("areaName","（南区）"+map.get("areaName"));
                    }
                }
                mobileIndexService.updateYMBCS(map.get("servertime"),map.get("typeName"),map.get("areaName"),map.get("windowName"),map.get("number"),user.get("createTime"),user.get("userId"),String.valueOf(m.get("id")),map.get("areaId"));
            }else{
                mobileIndexService.updateYMBCSCanll(String.valueOf(m.get("id")));
            }
        }
        mobileIndexService.delQRById();
    }
    //清空超期法人和经办人数据
    @Scheduled(cron = "0 50 17 ? * *")
    public void updateListFR() {
        ymbcsMatterService.updateListFR();
    }

}
